'use strict';
const db = uniCloud.database();
const _ = db.command;

exports.main = async (event, context) => {
  try {
    // 获取用户ID - 使用uni-id提供的用户认证信息
    let userId = event.uid;
    let tokenStatus = 'valid';
    
    console.log('接收到的token:', event.uniIdToken ? event.uniIdToken.substring(0, 20) + '...' : '无token');
    
    if (event.uniIdToken) {
      try {
        const { uniID } = require('uni-id-common');
        const uniIDIns = uniID.createInstance({ context });
        const userInfo = await uniIDIns.checkToken(event.uniIdToken);
        
        console.log('token验证结果:', { code: userInfo.code, message: userInfo.message });
        
        if (userInfo.code === 0) {
          userId = userInfo.uid;
          console.log('token有效，用户ID:', userId);
        } else {
          tokenStatus = 'invalid';
          console.log('token无效:', userInfo.message);
          // return {
          //   code: 401,
          //   message: '用户登录已过期，请重新登录',
          //   tokenStatus: 'expired',
          //   originalCode: userInfo.code
          // };
        }
      } catch (userError) {
        tokenStatus = 'error';
        console.error('验证用户信息失败:', userError);
        // return {
        //   code: 401,
        //   message: '用户登录状态验证失败',
        //   tokenStatus: 'error',
        //   error: userError.message
        // };
      }
    } else {
      // tokenStatus = 'missing';
      // console.log('未提供token');
      // return {
      //   code: 401,
      //   message: '用户未登录，请先登录',
      //   tokenStatus: 'missing'
      // };
    }
    
    // 获取分页参数
    const page = event.page || 1;
    const size = event.size || 20;
    const skip = (page - 1) * size;
    
    // 查询用户收藏的壁纸ID列表
    const favoritesRes = await db.collection('favorites')
      .where({
        user_id: userId
      })
      .field({
        wallpaper_id: true
      })
      .skip(skip)
      .limit(size)
      .orderBy('create_time', 'desc')
      .get();
    
    if (favoritesRes.data.length === 0) {
      return {
        code: 0,
        message: '获取成功',
        data: {
          list: [],
          hasMore: false
        }
      };
    }
    
    // 提取壁纸ID列表
    const wallpaperIds = favoritesRes.data.map(item => item.wallpaper_id);
    
    // 查询壁纸详情
    const wallpapersRes = await db.collection('wallpapers')
      .where({
        _id: _.in(wallpaperIds)
      })
      .get();
    
    // 将壁纸详情数据转换为Map以便快速查找
    const wallpapersMap = new Map();
    wallpapersRes.data.forEach(wallpaper => {
      // 标记为已收藏
      wallpaper.is_favorite = true;
      wallpapersMap.set(wallpaper._id, wallpaper);
    });
    
    // 按照收藏顺序排序壁纸
    const sortedWallpapers = favoritesRes.data.map(favorite => {
      return wallpapersMap.get(favorite.wallpaper_id);
    }).filter(Boolean); // 过滤可能不存在的壁纸
    
    // 检查是否还有更多数据
    const totalRes = await db.collection('favorites')
      .where({
        user_id: userId
      })
      .count();
    
    const hasMore = skip + size < totalRes.total;
    
    return {
      code: 0,
      message: '获取成功',
      data: {
        list: sortedWallpapers,
        hasMore
      }
    };
  } catch (error) {
    console.error('获取用户收藏失败:', error);
    // 避免在系统错误时跳转到登录页面
    return {
      code: 500,
      message: '获取收藏列表失败，请稍后重试',
      error: error.message,
      // 明确不是认证错误，避免前端错误判断
      isAuthError: false
    };
  }
};